<!--
  Copyright JS Foundation and other contributors, http://js.foundation

  Licensed under the Apache License, Version 2.0 (the "License");
  you may not use this file except in compliance with the License.
  You may obtain a copy of the License at

  http://www.apache.org/licenses/LICENSE-2.0

  Unless required by applicable law or agreed to in writing, software
  distributed under the License is distributed on an "AS IS" BASIS,
  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  See the License for the specific language governing permissions and
  limitations under the License.
-->

<script type="text/html" data-help-name="exec">
    <p>Ausführung eines Systembefehls und Rückgabe seiner Ausgabe.</p>
    <p>Der Node kann so eingestellt werden, dass er entweder bis zum Befehlabschluss wartet (exec) oder
       die Ausgabe sogleich sendet (spawn), wie der Befehl sie generiert.</p>
    <p>Der auszuführende Befehl kann im Node eingestellt und/oder
       über die empfangene Nachricht übergeben werden.</p>
    <h3>Eingangsdaten</h3>
    <dl class="message-properties">
        <dt class="optional">payload <span class="property-type">string</span></dt>
        <dd>Wird an auszuführenden Befehl angehängt, sofern im Node aktiviert.</dd>
        <dt class="optional">kill <span class="property-type">string</span></dt>
        <dd>Typ des Kill-Signals, das an den zu beendenden exec-Node-Prozess gesendet wird.</dd>
        <dt class="optional">pid <span class="property-type">number | string</span></dt>
        <dd>Prozess-ID des zu beendenden exec-Node-Prozesses.</dd>
    </dl>
    <h3>Ausgangsdaten</h3>
    <ol class="node-ports">
        <li>Standardausgabe (stdout)
            <dl class="message-properties">
                <dt>payload <span class="property-type">string</span></dt>
                <dd>Standardausgabe des Befehls.</dd>
            </dl>
            <dl class="message-properties">
                <dt>rc <span class="property-type">object</span></dt>
                <dd>Rückgabe-Code-Objekts (auch an Port 3 verfügbar) - nur im exec-Modus verfügbar.</dd>
            </dl>
        </li>
        <li>Standardfehlerausgabe (stderr)
            <dl class="message-properties">
                <dt>payload <span class="property-type">string</span></dt>
                <dd>Standardfehlerausgabe des Befehls.</dd>
            </dl>
            <dl class="message-properties">
                <dt>rc <span class="property-type">object</span></dt>
                <dd>Rückgabe-Code-Objekts (auch an Port 3 verfügbar) - nur im exec-Modus verfügbar.</dd>
            </dl>
        </li>
        <li>Rückgabe-Code
            <dl class="message-properties">
                <dt>payload <span class="property-type">object</span></dt>
                <dd>Objekt mit dem Rückgabe-Code und gegebenenfalls <code>message</code> oder <code>signal</code>-Eigenschaften.</dd>
            </dl>
        </li>
    </ol>
    <h3>Details</h3>
    <p>Standardmäßig wartet der zur Befehlsausführung genutzte Systemaufruf <code>exec</code>,
       bis die Ausführung abgeschlossen ist, und gibt anschließend dessen Ausgaben zurück.
       Ein erfolgreich ausgeführter Befehl sollte z.B. den Rückgabe-Code <code>{ code: 0 }</code> haben.</p>
    <p>Optional kann stattdessen <code>spawn</code> verwendet werden, wodurch die Standardausgabe und Standardfehlerausgabe
       bereits während der Befehlsausführung in der Regel Zeile für Zeile rückgegeben werden.
       Nach Befehlsabschluss wird ein Objekt am 3. Port ausgegeben.
       Ein erfolgreich ausgeführter Befehl sollte z.B. <code>{ code: 0 }</code> zurückgeben.</p>
    <p>Fehler können zusätzliche Informationen über den dritten Port als <code>msg.payload</code> zurückgeben,
       z.B. eine <code>message</code>- oder <code>signal</code>-Zeichenfolge.</p>
    <p>Der auszuführende Befehl wird innerhalb des Nodes mit der Option zum Anhängen von
       <code>msg.payload</code> und weiteren Parametern definiert.</p>
    <p>Befehle oder Parameter mit Leerzeichen sollten in Anführungszeichen eingeschlossen werden,
       z.B. <code>"Dies ist ein einzelner Parameter"</code></p>
    <p>Die zurückgegebenen Daten (Payload) sind in der Regel eine <i>Zeichenfolge (string)</i>,
       außer es werden nicht UTF-8-Zeichen wie bei einem <i>binären Puffer (buffer)</i> erkannt.</p>
    <p>Bei einem aktiven Node werden Status und die PID angezeigt.
       Änderungen können mittels status-Node gelesen werden.</p>
    <h4><b>Prozesse beenden</b></h4>
    <p>Durch Senden von <code>msg.kill</code> wird ein einzelner aktiver Prozess beendet.
       <code>msg.kill</code> sollte als Zeichenfolge (string) den Signaltyp enthalten,
       z.B. <code>SIGINT</code>, <code>SIGQUIT</code> oder <code>SIGHUP</code>.
       Der Standardwert ist <code>SIGTERM</code>, wenn die Zeichenfolge leer ist.</p>
    <p>Wenn der Node mehr als einen Befehl bzw. Prozess ausführt,
       muss zusätzlich über <code>msg.pid</code> die PID des zu beendenden Prozesses übergeben werden.</p>
    <p>Wenn ein <code>Zeitlimit</code> angegeben ist, wird der Prozess automatisch nach Ablauf der Zeit beendet.</p>
    <p><b>Tipp</b>: Wenn Sie eine Python-App ausführen, müssen Sie möglicherweise den Parameter <code>-u</code> verwenden,
       um die Ausgabepufferung zu stoppen.</p>
</script>
